﻿using System;
using System.IO;
using System.Text;

namespace FileStream文件流
{
    class Program
    {
        static void Main(string[] args)
        {
           
            //FileStream FileStream FileStream FileStream FileStream FileStream FileStream FileStream FileStream FileStream FileStream FileStream FileStream FileStream FileStream
            //使用FileStream来读取数据
            //FileStream  操作字节的 可以操作任何类型的文件    可以操作大文件对内存压力小
            //StreamReader和StreamWriter 操作字符的，只能操作文本文件
            //创建FileStream对象
            //第一个操作 把要操作的路径填上，第二个操作针对于文件做的操作，第三个你要针对于这个数据做出的操作
            //FileStream file = new FileStream(@"C:\Users\Administrator\Desktop\new2.txt",FileMode.OpenOrCreate,FileAccess.Read);
            //byte[] duffel = new byte[1024 * 1024 * 5];
            // int r = file.Read(duffel, 0, duffel.Length);
            //将字节数组中每一个元素按照指定的解码格式解码成字符串
            //string s= Encoding.Default.GetString(duffel,0,r);
            //关闭流
            //file.Close();
            //释放流所占用的资源
            //file.Dispose();
            //Console.WriteLine(s);

            //使用FileStream来写入数据
            //using (FileStream fswrite = new FileStream(@"C:\Users\Administrator\Desktop\new2.txt", FileMode.OpenOrCreate, FileAccess.Write))
            //{
            //    string str ="覆盖";
            //    byte[] buffer = Encoding.Default.GetBytes(str);
            //    fswrite.Write(buffer, 0, buffer.Length);
            //}
            //Console.WriteLine("写入成功");

            //使用文件流来实现多媒体复制
            //string source = @"C:\Users\Administrator\Desktop\5.2-Java集合框架-ArrayList、LinkedList等 1.mp4";
            //string target = @"C:\Users\Administrator\Desktop\13";
            //CopyFile(source, target);
            //Console.WriteLine("写入成功");

            //StreamReader和StreamWriter
            //使用StreamReader来读取一个文本文件
            //   using(StreamReader sr=new StreamReader(@"C:\Users\Administrator\Desktop\new2.txt"))
            //{
            //    while (!sr.EndOfStream)
            //    {
            //        Console.WriteLine(sr.ReadLine());
            //    }
            //}
            //使用StreamWriter来写入一个文件
            //如果不想覆盖文本里面的内容后面写true就可以
            using (StreamWriter sw = new StreamWriter(@"C:\Users\Administrator\Desktop\new2.txt",true))
                sw.WriteLine("弟弟");
            Console.ReadLine();
        }
        public static void CopyFile(string source,string target)
        {
            //创建一个负责读取的流
            using (FileStream fsread = new FileStream(source, FileMode.Open, FileAccess.Read))
            {
                //创建一个负责写入的流
                using (FileStream fswrite = new FileStream(target, FileMode.OpenOrCreate, FileAccess.Write))
                {
                    byte[] buffer = new byte[1024 * 1024 * 5];
                    //因为读取的文件比较大，所以我们在读取的时候，应该通过一个循环去读取
                    while (true)
                    {
                        //返回本次读取中实际读取到的字节数
                        int r = fsread.Read(buffer, 0, buffer.Length);
                        if (r == 0)
                        {
                            break;
                        }
                        fswrite.Write(buffer, 0, r);
                    }
                }
            }
            

        }
    }
}
